/**
 * 
 */
package com.fichaClinica;

/**
 * @author Maria Jose
 *
 */
public class validacionRut {

	/**
	 * Valida la cadena que ingresa.
	 * @param String
	 * @return Integer
	 */
	public Integer validacionrut(String rut){
		Integer validacion = 1;
		String digito;
		Integer resultadoValidaR;

		//validation if there is "-"
		if(rut.contains("-")){
			
			String[] rutAux = rut.split("-");
			if(rutAux.length >1){
				digito = rutAux[1];
			}
			else
			{
				digito = "";
			}
			
			rut = rutAux[0];
			resultadoValidaR = correctoRut(rut, digito);
			
			if(resultadoValidaR == 1){
				validacion= 1;
			}else if(resultadoValidaR == 2){
				validacion = 2;
			}
			else if(resultadoValidaR == 3){
				validacion = 3;
			}
			else if(resultadoValidaR == 4){
				validacion = 4;
			}
			else if(resultadoValidaR == 5){
				validacion = 5;
			}
		}
		else{
			validacion = 6; //rut sin guion;
		}
		
		return validacion;
	}
	
	/**
	 * Devuelve el caso donde la validacion del rut cayo
	 * @param rut String
	 * @param digi String
	 * @return Integer
	 */
	private Integer correctoRut(String rut,String digi){

		if(digi != null && !("").equals(digi)){
			/**
			 * validacion por si el rut que viene contiene alguna letra.
			 */
			try {
				Integer.parseInt(rut);
			} catch (NumberFormatException e) {
				return 1;// sale el rut es incorrecto,no numerico
			}


			int num1 = 0;
			int num2 = 0;
			int num3 = 0;
			int num4 = 0;
			int num5 = 0;
			int num6 = 0;
			int num7 = 0;
			int num8 = 0;
			int y = 0;
			int resultado = 0;
			Integer resto = 0;
			String digito = "";
			if (rut == null || rut.length() < 7) {
				return 2; // sale ,el rut es incorrecto
			} else {
				int largo = rut.length();
				if (largo == 7) {
					rut = ('0' + rut);
				}
				num1 = Integer.parseInt(rut.substring(7, 8));
				num2 = Integer.parseInt(rut.substring(6, 7));
				num3 = Integer.parseInt(rut.substring(5, 6));
				num4 = Integer.parseInt(rut.substring(4, 5));
				num5 = Integer.parseInt(rut.substring(3, 4));
				num6 = Integer.parseInt(rut.substring(2, 3));
				num7 = Integer.parseInt(rut.substring(1, 2));
				num8 = Integer.parseInt(rut.substring(0, 1));

				y = (num1 * 2) + (num2 * 3) + (num3 * 4) + (num4 * 5) + (num5 * 6) + (num6 * 7) + (num7 * 2) + (num8 * 3);
				resultado = y % 11;
				resto = 11 - resultado;

				digito = resto.toString();
				if (resto == 10) {
					digito = "k";
				}
				if (resto == 11) {
					digito = "0";
				} else {
					digito = resto.toString();
				}

			}
			if(digito.equals(digi)){
				return 4; // rut correcto;
			}
			else{
				return 5; // digito no corresponde
			}
		}else{
			return 3; //digito verificador vacio
		}

	}


}
